package org.wak.dialog
{
	import flash.display.DisplayObject;
	import flash.events.IEventDispatcher;
	
	import org.wak.character.AdventureCharacter;
	
	/**
	 * Common interface between differents dialog systems. 
	 * 
	 */	
	public interface IDialogsController extends IEventDispatcher
	{
		/**
		 * Initialize the Dialog controller 
		 * 
		 */		
		function Initialize():void ;
		
		/**
		 * the display object of the dialog controller. 
		 * @return a DisplayObject
		 * 
		 */		
		function get display():DisplayObject ;
		
		/**
		 * Starts a scumm dialog 
		 * @param pDialog AdventureDialog to start.
		 * 
		 */		
		function StartDialog(pDialog:AdventureDialog):void ;
		
		/**
		 * makes a character say something 
		 * @param pChar the speaker character 
		 * @param pTextToSay the text to say
		 * @param pOnComplete function called on completed.
		 * 
		 */		
		function CharacterSay(pChar:AdventureCharacter, pTextToSay:String, pOnComplete:Function = null):void
		
		/**
		 * Display an information message.
		 * @param pText message to display
		 * @param pOnCompleteFunction callback function to be called after the message was displayed.
		 * 
		 */		
		function DisplayInfo(pText:String, pOnCompleteFunction:Function = null):void
		
		/**
		 * Set a topic option visibility. 
		 * @pDialogId dialog id.
		 * @param pTopicId Topic id to activate.
		 * @value true or false.
		 */		
		function SetOptionVisible(pDialogId:String, pTopicId:String, value:Boolean):void;
		
		/**
		 * Updates the scrolling buttons. 
		 * 
		 */		
		function UpdateScrollButtons():void;
	}
}